#pragma once

#include <iostream>

// include BLAS:
#ifdef _WIN32
#include "blas\ddot.h"
#include "blas\daxpy.h"
#include "blas\dgemv.h"
#include "blas\dgemm.h"
#ifdef _DEBUG
#pragma comment(lib, "blas_win32_MTd.lib")
#else
#pragma comment(lib, "blas_win32_MT.lib")
#endif
#else
#include <cblas.h>
#endif

#include <omp.h>
#include <cstdlib>
#include <fstream>

#include <cfloat> // for FLT_MAX, ...
#include <cmath> // for ceil, ...
#include <ctime> // for time, ...
#include <string> // for string, ...
#include <sstream> // for stringstream, ...
#include <iomanip> // for setfill, ...


// ASSERT/VERIFY:
#undef ASSERT
#undef VERIFY
#ifdef _DEBUG
#ifdef _WIN64
#define DBGBRK DebugBreak()
#else
#define DBGBRK { _asm int 3 }
#endif

#define ASSERT(x)	if (!(x)) { DBGBRK; } else {}
#define VERIFY(x) if (!(x)) { DBGBRK; } else {}
#else
#define ASSERT(x)
#define VERIFY(x) x
#endif